package hotel.board.circuit;

import hotel.exception.BuildingsMissingException;
import hotel.exception.NotEnoughPlaceException;
import hotel.player.IPlayer;

public interface IModifiableCircuit extends ICircuit {
	
	// COMMANDES
	
	/**
	 * @param p le joueur à avancer de i cases
	 * @param i le nombre de cases à parcourir
	 * @return la case atteinte
	 */
	ICase advance(IPlayer p, int i);
	
	/**
	 * @param c la case sur laquelle construire une entrée
	 * @param side le côté sur lequel construire l'entrée
	 * @throws NotEnoughPlaceException une entrée existe déjà sur cette case ou il n'y a aucun hôtel adjascent
	 * @throws BuildingsMissingException il n'y a aucun hôtel adjascent de ce côté.
	 */
	void buildEntry(ICase c, int side) throws NotEnoughPlaceException, BuildingsMissingException;
	
	/**
	 * Initialise les passages.
	 */
	void initPassed();

}
